home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.text.html;
-
- import java.io.IOException;
- import java.io.Reader;
- import java.io.Serializable;
- import java.io.StreamTokenizer;
- import java.io.StringReader;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.Vector;
- import javax.swing.text.AttributeSet;
- import javax.swing.text.MutableAttributeSet;
- import javax.swing.text.SimpleAttributeSet;
-
- class StyleSheet$CssParser implements Serializable {
- // $FF: synthetic field
- private final StyleSheet this$0;
- Vector selectors;
- Vector selectorTokens;
- String key;
- Vector ruleTokens;
- MutableAttributeSet declaration;
- boolean parsingDeclaration;
- boolean isLink;
- URL base;
-
- StyleSheet$CssParser(StyleSheet var1) {
- this.this$0 = var1;
- this.selectors = new Vector();
- this.selectorTokens = new Vector();
- this.ruleTokens = new Vector();
- this.declaration = new SimpleAttributeSet();
- }
-
- void addImport(String var1) {
- if (var1.startsWith("url(") && var1.endsWith(")")) {
- try {
- URL var5 = new URL(var1.substring(4, var1.length() - 1));
- if (var5 != null) {
- this.this$0.importStyleSheet(var5);
- }
- } catch (MalformedURLException var4) {
- }
- } else if (this.base != null) {
- try {
- URL var2 = new URL(this.base, var1);
- if (var2 != null) {
- this.this$0.importStyleSheet(var2);
- }
- } catch (MalformedURLException var3) {
- }
- }
-
- }
-
- void addKeyValueToDeclaration() {
- CSS.Attribute var1 = CSS.getAttribute(this.key);
- if (var1 != null) {
- Object var2 = this.getValue(var1);
- if (var2 != null) {
- this.declaration.addAttribute(var1, var2);
- }
- }
-
- this.ruleTokens.removeAllElements();
- }
-
- void addRule() {
- if (this.parsingDeclaration) {
- throw new RuntimeException("Declaration should not contain rules");
- } else {
- int var1 = this.selectors.size();
-
- for(int var2 = 0; var2 < var1; ++var2) {
- String[] var3 = (String[])this.selectors.elementAt(var2);
- if (var3.length > 0) {
- this.this$0.addRule(var3, this.declaration, this.isLink);
- }
- }
-
- this.declaration.removeAttributes(this.declaration);
- this.selectors.removeAllElements();
- }
- }
-
- void addSelector() {
- String[] var1 = new String[this.selectorTokens.size()];
- this.selectorTokens.copyInto(var1);
- this.selectors.addElement(var1);
- this.selectorTokens.removeAllElements();
- }
-
- String getDeclarationString() {
- String var1 = "";
- int var2 = this.ruleTokens.size();
-
- for(int var3 = 0; var3 < var2; ++var3) {
- var1 = var1 + this.ruleTokens.elementAt(var3);
- }
-
- this.ruleTokens.removeAllElements();
- return var1;
- }
-
- Object getValue(CSS.Attribute var1) {
- return StyleSheet.access$0(this.this$0).getInternalCSSValue(var1, this.getDeclarationString());
- }
-
- void parse(URL var1, Reader var2, boolean var3, boolean var4) throws IOException {
- this.base = var1;
- this.isLink = var4;
- this.declaration.removeAttributes(this.declaration);
- this.selectorTokens.removeAllElements();
- this.selectors.removeAllElements();
- this.ruleTokens.removeAllElements();
- this.parsingDeclaration = var3;
- StreamTokenizer var5 = new StreamTokenizer(var2);
- var5.ordinaryChar(47);
- var5.slashStarComments(true);
- var5.wordChars(35, 35);
- boolean var6 = var3;
- boolean var7 = false;
- boolean var8 = false;
- boolean var9 = false;
- StringBuffer var10 = null;
- boolean var11 = false;
- char[] var12 = new char[1];
-
- for(int var13 = var5.nextToken(); var13 != -1; var13 = var5.nextToken()) {
- switch (var13) {
- case -3:
- if (var7) {
- if (var8) {
- var10.append(var5.sval);
- } else if (var5.sval.equals("import")) {
- var8 = true;
- if (var10 == null) {
- var10 = new StringBuffer();
- } else {
- var10.setLength(0);
- }
- }
- } else if (var6) {
- this.ruleTokens.addElement(var5.sval);
- } else {
- if (var11) {
- this.selectorTokens.addElement('.' + var5.sval);
- } else {
- this.selectorTokens.addElement(var5.sval);
- }
-
- var9 = true;
- }
-
- var11 = false;
- break;
- case -2:
- var11 = false;
- if (var7) {
- if (var8) {
- var10.append(var5.nval);
- }
- } else if (var6) {
- this.ruleTokens.addElement(new Integer((int)var5.nval));
- } else if (var5.nval == (double)0.0F) {
- var11 = true;
- } else {
- String var14 = (String)this.selectorTokens.lastElement();
- var14 = var14 + (int)var5.nval;
- this.selectorTokens.setElementAt(var14, this.selectorTokens.size() - 1);
- var9 = true;
- }
- case 10:
- break;
- default:
- var11 = false;
- if (var7) {
- if (var5.ttype == 59) {
- var7 = false;
- if (var8) {
- if (!var9) {
- this.addImport(var10.toString());
- }
-
- var8 = false;
- }
- } else if (var8) {
- if (var5.ttype != 39 && var5.ttype != 34) {
- var10.append((char)var5.ttype);
- } else {
- var10.append(var5.sval);
- }
- }
- } else {
- switch (var5.ttype) {
- case 44:
- if (var6) {
- this.ruleTokens.addElement(new Character(','));
- } else {
- this.addSelector();
- }
- break;
- case 58:
- this.key = this.getDeclarationString();
- break;
- case 59:
- this.addKeyValueToDeclaration();
- break;
- case 64:
- var7 = true;
- var8 = false;
- break;
- case 123:
- var9 = true;
- this.addSelector();
- var6 = true;
- break;
- case 125:
- if (this.ruleTokens.size() > 0) {
- this.addKeyValueToDeclaration();
- }
-
- this.addRule();
- var6 = false;
- break;
- default:
- if (var6) {
- this.ruleTokens.addElement(new Character(','));
- } else if (this.selectorTokens.size() == 0) {
- var12[0] = (char)var5.ttype;
- this.selectorTokens.addElement(new String(var12));
- } else {
- String var16 = (String)this.selectorTokens.lastElement();
- var16 = var16 + (char)var5.ttype;
- this.selectorTokens.setElementAt(var16, this.selectorTokens.size() - 1);
- }
- }
- }
- }
- }
-
- if (this.parsingDeclaration && this.ruleTokens.size() > 0) {
- this.addKeyValueToDeclaration();
- }
-
- }
-
- AttributeSet parseDeclaration(Reader var1) throws IOException {
- this.parse(this.base, var1, true, false);
- return this.declaration.copyAttributes();
- }
-
- AttributeSet parseDeclaration(String var1) {
- try {
- return this.parseDeclaration((Reader)(new StringReader(var1)));
- } catch (IOException var2) {
- return null;
- }
- }
- }
-